1. Field of the Invention
The present invention generally relates to an improved data processing system, and more particular to an improved graphical user interface (GUI) for a data processing system. Still more particular, the present invention relates to an improved GUI for a data processing system where the GUI includes a parent and child windows having variable levels of modality.
2. Description of Related Art
The basic structure of a conventional computer system 10 is shown in FIG. 1. Computer system 10 has at least one central processing unit (CPU) or processor 12 which is connected to several peripheral devices, including input/output devices 14 (such as a display monitor, keyboard, and graphical pointing device) for the user interface, a permanent memory device 16 (such as a hard disk) for storing the computer's operating system and user programs, and a temporary memory device 18 (such as random access memory or RAM) that is utilized by processor 12 to carry out program instructions. Processor 12 communicates with the peripheral devices by various means, including a bus 20 or a direct channel 22 (more than one bus may be provided utilizing a bus bridge).
Computer system 10 may have many additional components which are not shown such as serial, parallel, and USB ports for connection to, e.g., modems or printers. Those skilled in the art will further appreciate that there are other components that might be used in conjunction with those shown in the block diagram of FIG. 1; for example, a display adapter connected to processor 12 might be used to control a video display monitor, and a memory controller may be used as an interface between temporary memory device 18 and processor 12. Computer system 10 also includes firmware 24 whose primary purpose is to seek out and load an operating system from one of the peripherals (usually permanent memory device 16) whenever the computer is first turned on.
With further reference to FIG. 2, conventional computer systems often employ a graphical user interface (GUI) to present information to the user. The GUI is provided by software that is loaded on the computer, specifically, the computer's operating system acting in conjunction with application programs. Two well-known GUIs include OS/2 (a trademark of International Business Machines Corp.) and Windows (a trademark of Microsoft Corp.).
Generally speaking, a typical GUI provides application windows of two varieties: a parent window and a child window (also known as a dialog box or secondary window). Typically, a parent window is opened when a user initiates execution of an application program. As execution of the application program continues, the parent window opens various child windows which allow the user to access various functionalities in the application program. For example, a parent window may be opened when a user initiates execution of a word processing program. The parent window will, in turn, open a child window corresponding to each document that the user is editing or creating.
In the example of FIG. 2, a generic application program entitled "Document Manager" is presented by the GUI as a primary application window (parent window) 26 on a display device 28 (i.e., video monitor). In this example, the application window has several child windows 30, 32 and 34 which are usually enclosed by parent window 26. These child windows 30, 32 and 34 depict the contents of various files or documents that are handled by the program. A menu bar 36 with a standard set of commands, a toolbar 38, and a status bar 40 may also be provided as part of the GUI, to simplify manipulation and control of the objects (e.g., text, charts and graphics) within the child windows. Windows can overlap one another, in multiple layers. A graphical pointer 42 in the form of an arrowhead is controlled by a pointing device (mouse) in order to manipulate objects in the GUI.
"Modality" refers to the level of interaction allowed when a child window has been opened. It is a description of the ability of the user to interface with other windows, besides the present child window, while the child window is displayed on the GUI.
Application developers today working in common industry-standard operating system environments (such as Microsoft Windows, UNIX) can create child windows as "descendants" of parent application windows. The child windows can contain an attribute that allows them to either be non-modal or modal. Conventional operating systems GUIs allow the application programmer to determine the modal state of the child windows. The child windows are either modal or non-modal (modeless). Modal refers to a type of movable window, fixed in size, that requires a user to enter information before continuing to work in the application window from which it is displayed. For example, when a user invokes the save command on a typical word processing software, the user has to complete the save request or exit the child window before he can interact with the text on the parent window. Modeless or non-modal is a type of movable window, fixed in size, that allows users to continue their dialog with the application without entering information in or closing the child window. In the above example, if the save child window is modeless, the user is able to interact with the text on the parent window without first saving the document or exiting from the child window.
When an application displays a modal dialog box, the window that owns the dialog box is disabled, effectively suspending the application. The user must complete interaction with the modal dialog before the application can continue.
A modal dialog is usually created and activated through the Dialogbox function. This function creates a dialog window from a dialog template resource and displays the dialog as a modal dialog. The application that calls the Dialogbox function supplies the address of a callback function; Dialogbox does not return until the dialog box is dismissed through a call to EndDialog made from this callback function (possibly in response to a user-interface event, such as a click on the OK button). Modal windows may be system modal or application modal. When a child window is system modal, the user may interact only with that child window; no other window on the desktop can be interacted with until the child window is closed. In contrast, if child window is application modal, the user may interact with other desktop windows which are not affiliated with the same application parent window as the child window. Affiliated application windows will not respond to user-interactions until the child window is closed. A child window which is non-model permits user interaction with all other windows on the desktop, even those affiliated with the application and regardless of whether or not the child window is open.
Presenting a modeless dialog does not suspend execution of the application by disabling the owner window of the dialog box. However, modeless dialogs usually remain on top of their owner window even when the owner window gains focus. Modeless dialogs represent an effective way of continuously displaying relevant information to the user.
A modeless dialog is typically created through the CreateDialog function. As there is no equivalent of the DialogBox function for modeless dialog, applications are responsible for retrieving and dispatching messages for the modeless dialog. Most applications do this in their main message loop; however, to ensure that the dialog responds to keyboard events as expected and enables the user to move between controls using keyboard shortcuts, the application must call the IsDialogMessage function. A modeless dialog does not return a value to its owner. However, the modeless dialog and it owner can communicate using SendMessage calls.
FIG. 3 depicts a display device 70 (i.e., video monitor) of a computer system GUI in accordance with the prior art. In the figure, the GUI displays an active parent window 76 having one child window 80 open. The GUI further presents a background area or "desktop" 72 on display device 70 wherein the application windows and other software features (dialog boxes, icons, etc.) are placed on top of desktop 72. A graphical pointer 78 in the form of an arrowhead is provided to allow the user, through manipulation of a pointing device of the computer system, to select, highlight and activate various objects or features of the GUI. Child window 80 may include other pushbuttons. Only the save options "No" 82, "Yes" 83a and "Exit" 83b, are illustrated here.
Child window 80 is active in the sense that it has been placed "on top" of the GUI, i.e., foremost (prominent) with respect to other application windows such as the active parent window 76 and inactive application window 74. In the "on top" position, the operating system redirects user inputs (e.g., from a keyboard) to this child window 80. In the particular configuration shown, child window 80 is sized and positioned within desktop 72 so as to cover (partially obscure) inactive application window 74 or active parent window 76 and child windows, if any, of inactive application window 74.
In the example depicted in FIG. 3, a child window has been launched in response to a user attempting to close a text editor. The program puts up an application-modal message child window 80 that asks the user if he wants to save his changes. Suppose the user would like to study the online help for the application before selecting "Yes" 82b or "No" 82a. Today the user is unable to select Help from the main window pull-down menu, and would be stuck (i.e. unable to access the Help feature) if the developer did not also include a Help pushbutton on the message window.
European pat No. 463,250 refers to semi-modal dialog boxes; however, it specifically refers to the relationship between two or more child windows subservient to a parent window, and not on the inherent relationship between a child window and its parent as this invention does. For example, it considers situations where opening a child window for an application might not assure data integrity if a different child window is already existent. In such a case, the new child window would not be allowed creation. This present invention does not cover such situations. Rather, it invents compromise window manipulation possibilities for parent windows based on levels of modality context in a child window, independent of any other child windows.
Occasionally, a developer might want the window to be something in-between totally modal and totally non-modal. For example, the user may want to select the Help item from the menu of the parent window as explained above. There is no way to specify and implement this today. It would, therefore, be desirable to devise an improved GUI interface that allowed for child windows of variable modality. It would be further advantageous if the GUI interface permitted the programmer to specify the level of modality for each component of the child windows.